new Number(42) !== 42
console.log(new Number(42) !== 42);
console.log(new Number(42) == 42);//仅仅代表值相同
console.log(new Number(42) === 42);//数据类型不同，所以false

// 相当于把那个对象的toString方法解构复值给let申明的变量 s就是一个方法 函数
let { toString: s } = 123;//如果等号右边是数值和布尔值，则会先转为对象
s === Number.prototype.toString // true
console.log(s);

let { toString: h } = true;
h === Boolean.prototype.toString // true

// 代码是为函数move的参数指定默认值，而不是为变量x和y指定默认值
function move({ x, y } = { x: 0, y: 0 }) {
    return [x, y];
}

move({ x: 3, y: 8 }); // [3, 8]
move({ x: 3 }); // [3, undefined]
move({}); // [undefined, undefined]
move(); // [0, 0]

let [x = 1] = []
console.log(x);
[(b)] = [3]; // 正确
console.log(b);
console.log('----');
// 参数是一组有次序的值
function f([x, y, z]) { console.log(x, y, z) }
f([1, 2, 3]);
console.log('----');
// 参数是一组无次序的值
function f({ x, y, z }) { console.log(x, y); }
f({ z: 3, y: 2, x: 1 });
console.log('----');
let jsonData = {
    id: 42,
    status: "OK",
    data: [867, 5309]
};

let { id, status, data: number } = jsonData;

console.log(id, status, number);
  // 42, "OK", [867, 5309]
